Cryptography can be generally described as a scientific and engineering field that develops and analyzes techniques for protecting the privacy of stored or communicated data. Because the protection of data is a top concern in many applications, cryptography is employed to protect the data in many applications. For example, mobile, sensing, health, financial, e-commerce and other applications have elevated the importance of cryptography in protecting data.
Currently, cryptography is mainly performed using secret key (e.g., symmetric key, shared key, private key, and one key) and public key techniques. Cryptographic techniques, and in particular public key protocols, have been the basis for numerous security applications, ranging from secure email, secure remote access (e.g., passwords and smart cards), remote gambling, and digital signatures to privacy protection, digital rights management, watermarking and fingerprinting.
However, conventional cryptographic techniques have several drawbacks. First, the current state-of-the-art cryptographic techniques are based on extremely likely but nevertheless unproven mathematical assumptions. Second, even if there are no algorithmic weaknesses in public key cryptographical protocols, they can often be broken due to software vulnerabilities, physical attacks, or side channels.